package br.com.conhecimento.util;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;

import br.com.conhecimento.model.Acesso;
import br.com.conhecimento.model.Menu;
import br.com.conhecimento.model.MenuItem;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;

public class MenuUtil {

	public MenuUtil(List<Acesso> acessos){
		Collections.sort(acessos);
		getDynamicMenu(acessos);
	}

	private Map<Menu, List<MenuItem>> menus;

	private void getDynamicMenu(List<Acesso> acessos){
		menus = Maps.newLinkedHashMap();
		Set<Menu> menu = Sets.newLinkedHashSet();
		//Carrega todos menus
		for (Acesso acesso : acessos) {
			menu.add(acesso.getMenuItem().getMenu());
		}
		//Carrega itemMenu por menu
		for(Menu m : menu) {
			List<MenuItem> itens = Lists.newLinkedList();
			for (Acesso acesso : acessos) {
				if(m.getId().equals(acesso.getMenuItem().getMenu().getId())){
					itens.add(acesso.getMenuItem());
				}
			}
			menus.put(m, itens);
		}
	}

	public List<Menu> getParent(){
		List<Menu> retorno = Lists.newLinkedList();
		for (Map.Entry<Menu, List<MenuItem>> menu : menus.entrySet()) {
			retorno.add(menu.getKey());
		}
		return retorno;
	}

	public List<MenuItem> getChildren(Menu menu){
		return menus.get(menu);
	}
	
}
